package com.go.where.manager.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.StringUtils;

public class FileUtil {

	/**
	 * 清空文件
	 * 
	 * @param filePath
	 * @return
	 * @throws IOException
	 */
	public static boolean clearTxt(String filePath) throws IOException {
		// 文件路径
		boolean result = false;
		FileOutputStream fos = null;
		PrintWriter pw = null;
		try {
			File file = new File(filePath);
			if (!file.exists()) {
				file.createNewFile();
			}
			fos = new FileOutputStream(file);
			pw = new PrintWriter(fos);
			pw.write("");
			pw.flush();
			result = true;
		} catch (IOException e) {
			throw e;
		} finally {
			if (pw != null) {
				pw.close();
			}
			if (fos != null) {
				fos.close();
			}
		}
		return result;
	}

	/**
	 * 写文件
	 * 
	 * @param newStr
	 *            写入内容
	 * @param filePath
	 *            文件路径
	 * @return
	 * @throws IOException
	 */
	public static boolean writeTxtFile(String newStr, String filePath)
			throws IOException {
		// 先读取原有文件内容，然后进行写入操作
		boolean flag = false;
		String filein = newStr + System.getProperty("line.separator");
		String temp = "";
		FileInputStream fis = null;
		InputStreamReader isr = null;
		BufferedReader br = null;

		FileOutputStream fos = null;
		PrintWriter pw = null;
		try {
			// 文件路径
			File file = new File(filePath);
			if (!file.exists()) {
				file.createNewFile();
			}
			// 将文件读入输入流
			fis = new FileInputStream(file);
			isr = new InputStreamReader(fis);
			br = new BufferedReader(isr);
			StringBuffer buf = new StringBuffer();

			// 保存该文件原有的内容
			for (int j = 1; (temp = br.readLine()) != null; j++) {
				buf = buf.append(temp);
				// System.getProperty("line.separator")
				// 行与行之间的分隔符 相当于“\n”
				buf = buf.append(System.getProperty("line.separator"));
			}
			buf.append(filein);

			fos = new FileOutputStream(file);
			pw = new PrintWriter(fos);
			pw.write(buf.toString().toCharArray());
			pw.flush();
			flag = true;
		} catch (IOException e1) {
			throw e1;
		} finally {
			if (pw != null) {
				pw.close();
			}
			if (fos != null) {
				fos.close();
			}
			if (br != null) {
				br.close();
			}
			if (isr != null) {
				isr.close();
			}
			if (fis != null) {
				fis.close();
			}
		}
		return flag;
	}

	/**
	 * 读取txt文件，返回list集合
	 * 
	 * @param filePath
	 * @return
	 * @throws Exception
	 */
	public static List<String> read(String filePath, String mid)
			throws Exception {
		List<String> result = new ArrayList<String>();
		File f = new File(filePath);
		if (!f.exists()) {
			return null;
		}
		InputStreamReader isr = new InputStreamReader(new FileInputStream(
				filePath), "UTF-8");
		BufferedReader br = new BufferedReader(isr);
		String row;
		while ((row = br.readLine()) != null) {
			if (StringUtils.isBlank(mid)) {
				result.add(row.trim());
			} else {
				if (!mid.equals(row.trim())) {
					result.add(row.trim());
				}
			}

		}
		return result;
	}
}
